#include <iostream>
#include <cstdio>
#include <cstring>
#include <vector>
#include <queue>
#include <algorithm>

using namespace std;
const int inf = 1<<29;
int cost[256][256];
int dp[1010][110][26];
char str[10000];
int k,n,len;
void init()
{
	fill(dp[0][0],dp[0][0]+1010*110*26,-inf);
	fill(dp[1][1],dp[1][1]+26,0);
}
int main()
{
	init();
	cin>>str+1>>k;
	len=strlen(str+1);
	cin>>n;
	while(n--)
	{
		char x,y;
		int c;
		cin>>x>>y>>c;
		cost[x][y]=c;
	}
	dp[1][0][str[1]-'a']=0;
	dp[1][1][str[1]-'a']=-inf;
	for(int i=1;i<=len;i++)
	{
		for(int j=1;j-1<=min(k,i);j++)
		{
			for(char c='a';c<='z';c++)
			{
				int kk=str[i]==c?j-1:j;
				for(char prec='a';prec<='z';prec++)
				{
					if(dp[i-1][j-1][prec-'a']+cost[prec][c]>dp[i][kk][c-'a'])
					{
						dp[i][kk][c-'a']=dp[i-1][j-1][prec-'a']+cost[prec][c];
					}
				}
			}
		}
	}
	int ans=-inf;
	for(int i=0;i<=k;i++)
		for(int j=0;j<26;j++) ans=max(ans,dp[len][i][j]);
	cout<<ans<<endl;
	return 0;
}

